package com.zhuhjay.service.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuhjay.common.base.enums.LimiterEnums;
import com.zhuhjay.common.web.model.vo.PageInfoVo;
import com.zhuhjay.service.system.model.dto.BlackDto;
import com.zhuhjay.service.system.model.entity.SystemBlack;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author ZhuHJay
 * @since 2023-06-17
 */
public interface SystemBlackService extends IService<SystemBlack> {

    /**
     * 获取黑名单列表
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @return PageInfoVo<SystemBlack>
     */
    PageInfoVo<SystemBlack> blackPage(Integer pageNum, Integer pageSize);

    /**
     * 添加黑名单
     *
     * @param blackDto 黑名单
     */
    void add(BlackDto blackDto);

    /**
     * 添加黑名单, 从限流器中添加
     *
     * @param type   类型
     * @param target 目标
     * @param reason 原因
     */
    void addBlack4Limiter(LimiterEnums type, String target, String reason);
}
